<template>
<div class="row">
  <!-- 展示用户列表 -->
  <div class="card" v-show="info.users.length" v-for="user in info.users" :key="user.login">
    <a :href="user.html_url" target="_blank">
      <img :src="user.avatar_url" style="width:100px"/>
    </a>
    <p class="card-text">{{user.login}}</p>
  </div>
  <!-- 展示欢迎词 -->
  <h1 v-show="info.isFirst">欢迎使用！</h1>
  <!-- 展示加载中 -->
  <h1 v-show="info.isLoading">加载中。。。</h1>
  <!-- 展示错误信息 -->
  <h1 v-show="info.errMsg">{{info.errMsg}}</h1>
</div>
</template>

<script>

export default {
    name:'List',
    data() {
      return {
        info:{
          isFirst:true, // 是否初次访问
          isLoading:false, // 是否处于加载中
          errMsg:'', //错误信息
          users:[]
        }
      }
    },
    mounted() {
      //组件挂载后给全局事件总线绑定事件，用来获取Search组件查询的数据
      this.$bus.$on('updataObj',this.setUsers)
    },
    methods: {
      setUsers(obj){
        // this.info = obj  //这种方式会导致info中丢失isFirst属性，第一种处理是在传对象的时候加上
        //第二种处理是下面这种：合并两个对象属性，共有的属性以obj为准，各自独有的也加上，和参数顺序无关。
        // info和obj都得有的，以obj为准，info有obj没有，以info为准,info没有obj有，以obj为准
        this.info = {...this.info,...obj}
      }
    },
}
</script>

<style scoped>
.album {
  min-height: 50rem; /* Can be removed; just added for demo purposes */
  padding-top: 3rem;
  padding-bottom: 3rem;
  background-color: #f7f7f7;
}

.card {
  float: left;
  width: 33.333%;
  padding: .75rem;
  margin-bottom: 2rem;
  border: 1px solid #efefef;
  text-align: center;
}

.card > img {
  margin-bottom: .75rem;
  border-radius: 100px;
}

.card-text {
  font-size: 85%;
}
</style>